package com.atguigu.gmall.product.service;

import com.atguigu.gmall.model.product.*;
import com.baomidou.mybatisplus.core.metadata.IPage;

import java.util.List;

/**
 *分类与属性接口
 */
public interface ManageService {
    /**
     * 获取一级分类全部数据
     * @return
     */
    public List<BaseCategory1> getBaseCategory1();

    /**
     * 根据一级分类Id获取二级分类数据
     * @param category1Id
     * @return
     */
    public List<BaseCategory2> getBaseCategory2(Long category1Id);

    /**
     * 根据二级分类id获取三级分类
     * @param category2Id
     * @return
     */
    public List<BaseCategory3> getBaseCategory3(Long category2Id);

    /**
     * 获取属性列表
     * @param categoryId
     * @return
     */
    public List<BaseAttrInfo> getAttrInfoList(Long categoryId);

    /**
     * 添加/修改平台属性
     * @param baseAttrInfo
     */
    public void saveAttrInfo(BaseAttrInfo baseAttrInfo);

    /**
     * 删除平台属性值
     * @param id
     */
    public void deleteAttrInfo(Long id);

    /**
     * 获取品牌
     * @return
     */
    public List<BaseTrademark> getTrademarkList();

    /**
     * 获取商品销售属性名
     * @return
     */
    public List<BaseSaleAttr> getBaseSaleAttrList();

    /**
     * 新增/修改 supInfo
     * @param spuInfo
     */
    public void saveSpuInfo(SpuInfo spuInfo);

    /**
     * 分页查询spuInfo
     * @param page
     * @param size
     * @param category3Id
     * @return
     */
    public IPage<SpuInfo> getSpuInfoList(Integer page, Integer size , Long category3Id);

    /**
     * 分页查询品牌
     * @param page
     * @param size
     * @return
     */
    public IPage<BaseTrademark> getBaseTrademarkList(Integer page, Integer size);

    /**
     * 添加品牌
     * @param baseTrademark
     */
    public void saveBaseTrademark(BaseTrademark baseTrademark);

    /**
     * 根据Id查询品牌信息
     * @param id
     * @return
     */
    public BaseTrademark getBaseTrademark(Long id);

    /**
     * 修改品牌
     * @param baseTrademark
     */
    public void updateBaseTrademark(BaseTrademark baseTrademark);

    /**
     * 删除品牌
     * @param id
     */
    public void removeBaseTrademark(Long id);

    /**
     * 分页查询SkuInfo
     * @param page
     * @param size
     * @return
     */
    public IPage<SkuInfo> getSkuInfoList(Integer page, Integer size);

    /**
     * 根据SpuId 获取销售属性图片
     * @param spuId
     * @return
     */
    public List<SpuImage> getSpuImageList(Long spuId);

    /**
     * 根据SpuId 获取销售属性的名和值
     * @param spuId
     * @return
     */
    List<SpuSaleAttr> getSpuSaleAttrList(long spuId);

    /**
     * 新增/修改sku 表数据
     * @param skuInfo
     */
    public void saveSkuInfo(SkuInfo skuInfo);

    /**
     * 上下架商品
     * @param skuId
     * @param status
     */
    public void upOrDown(Long skuId,short status);
}
